\subsection{User interface}

The user interface is designed to be intuitive and straightforward in order to lower the error rate.
This GUI was developed against the classic engineering driven process parallel to the algorithms, so that it was possible to make modifications to the program code anytime and not only minor corrections at the end. Furthermore, the GUI was progressively optimized and validated throughout the project.

\bigskip
\noindent
\includegraphics[width=140mm]{images/gui01t.png}

\begin{enumerate}
\item With this menu sets of vertices can be saved and loaded.
\item The generator is used to randomly create sets with a given number of vertices.
\item The "Clear" button can be used to delete all vertices from the canvas.
\item In addition to LMT a convex hull can be selected as a triangulation method.
\item If LMT is selected, specific metrics can be used for triangulation.
\item The displayed edges can be reduced to only LMT or LMT and locally minimal ones.
\item The main canvas displays vertices, edges, and triangulation.
\item The status bar provides additional information about triangulation and processing time
\item A continuously adjustable zoom level can be set with this slider.
\end{enumerate}

Vertices can be added either by clicking anywhere on the canvas to generate the new vertex at that position or by using the random generator. The generator also clears the canvas before adding a new set of vertices. Existing vertices can be moved by clicking and dragging the mouse.

When there are less than 500 vertices on the canvas the user interface is working in an interactive mode, so that the triangulation is computed permanently when moving a vertex. With more vertices this changes to a more resource-efficient mode in which the computation begins only when the mouse button is released.
\\This limit for the mode change can be set manually in \code{controller.Globals.}\linebreak\code{MAXIMUM\_SIZE\_FOR\_INTERACTIVE\_MODE}.

\bigskip

\noindent The following operations are accessible via keyboard shortcuts:
\begin{itemize}
\item \textbf{c} to copy a vertex subset and \textbf{v} to paste it in a slightly offset position.
\item Mouse dragging while holding \textbf{Shift} to move a selected group of vertices.
\item Mouse dragging while holding \textbf{Alt} to select a rectangular vertex subset.
\item \textbf{Esc} to deselect.
\item \textbf{Del} to delete the selected vertices from the canvas.
\item \textbf{Shift} $\leftarrow$ to mirror the selected vertices vertically.
\item \textbf{Shift} $\uparrow$ to mirror the selected vertices horizontally.
\item \textbf{C} while holding \textbf{Shift} to show or hide beta circles if applicable.
\end{itemize}
